<?php 
	include_once $_SERVER["DOCUMENT_ROOT"].'/outils/parameters/ParameterGetter.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/outils/exceptions/FormulaireException.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/outils/writerJSON/WriterJSON.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/outils/string/StringUtils.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/service/uc/albummusique/GererAlbumMusiqueService.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/service/entite/Entite.php';

	class GererAlbumMusiqueAction {
		public static function ajouter() {
			$albumMusiqueEntite = GererAlbumMusiqueService::ajouterAlbumMusique();
			ParameterGetter::setSessionParameter("albumMusiqueEntite", $albumMusiqueEntite);
			WriterJSON::echoSuccessState();
		}
		
		public static function modifier() {
			$id = ParameterGetter::getRequestParameter("id", true);
			$albumMusiqueEntite = GererAlbumMusiqueService::modifierAlbumMusique($id);
			ParameterGetter::setSessionParameter("albumMusiqueEntite", $albumMusiqueEntite);	
			WriterJSON::echoDonnees(array("titre" => $albumMusiqueEntite->titre, "commentaire" => $albumMusiqueEntite->commentaire, "date" => $albumMusiqueEntite->date, "artiste" => $albumMusiqueEntite->artiste));
		}
		
		public static function getIdModifie() {
			$albumMusiqueEntite = ParameterGetter::getSessionParameter("albumMusiqueEntite", true);
			$id = $albumMusiqueEntite->id;
			WriterJSON::echoDonnees (array("id" => "$id"));
		}
		
		public static function valider() {
			$albumMusiqueEntite = ParameterGetter::getSessionParameter("albumMusiqueEntite", true);
			$albumMusiqueEntite->titre = ParameterGetter::getRequestParameter("titre", true);
			$albumMusiqueEntite->commentaire = ParameterGetter::getRequestParameter("commentaire", true);
			$albumMusiqueEntite->date = ParameterGetter::getRequestParameter("date", true);
			$albumMusiqueEntite->artiste = ParameterGetter::getRequestParameter("artiste", true);
			
			GererAlbumMusiqueAction::verifierAlbumMusiqueAvantValidation($albumMusiqueEntite);
			GererAlbumMusiqueService::validerAlbumMusique($albumMusiqueEntite);
			ParameterGetter::removeSessionParameter("albumMusiqueEntite"); 
			WriterJSON::echoSuccess ("L'album musique a bien été ajouté/modifié");
		}
		
		public static function annuler() {
			ParameterGetter::removeSessionParameter("albumMusiqueEntite");
			WriterJSON::echoSuccessState();
		}
		
		public static function supprimer() {
			$id = ParameterGetter::getRequestParameter("id", true);
			GererAlbumMusiqueService::supprimerAlbumMusique($id);
			WriterJSON::echoSuccess ("L'album musique a bien été supprimé");
		}
		
		public static function createRepertoireAlbumMusique() {
			$albumMusiqueId = ParameterGetter::getRequestParameter("id", true);
			GererAlbumMusiqueService::createRepertoireAlbumMusique($albumMusiqueId);
			WriterJSON::echoSuccess ("Le répertoire de l'album '$albumMusiqueId' a bien été créé");
		}
		
		public static function putAlbumMusiqueEnSession() {
			$id = ParameterGetter::getRequestParameter("id", true);
			$albumMusiqueEntite = GererAlbumMusiqueService::getAlbumMusiqueByID($id, true);
			ParameterGetter::setSessionParameter("albumMusiqueEntite", $albumMusiqueEntite);
			return $albumMusiqueEntite;
		}
		
		public static function getAlbumPhoto() {
			$albumMusiqueEntite = ParameterGetter::getSessionParameter("albumMusiqueEntite", true);
			$albumMusiqueEntite = GererAlbumMusiqueService::loadAlbumPhoto($albumMusiqueEntite);
			ParameterGetter::setSessionParameter("albumMusiqueEntite", $albumMusiqueEntite);
			return $albumMusiqueEntite->albumPhoto;
		}
		
		public static function getListeMusique() {
			$albumMusiqueEntite = ParameterGetter::getSessionParameter("albumMusiqueEntite", true);
			$listeMusique = GererAlbumMusiqueService::getListeMusique($albumMusiqueEntite);
			return $listeMusique;
		}
		
		public static function setCouvertureAlbum() {
			/*$albumPhotoEntite = ParameterGetter::getSessionParameter("albumPhotoEntite", true);
			
			//récupère le nom de la photo
			$nomCompletCouvertureAlbum = ParameterGetter::getRequestParameter("nomMiniatureAlbum", true);
			
			//applique la photo à l'album
			if ($nomCompletCouvertureAlbum == "") {
				$albumPhotoEntite->couverture = null;	
			} else {
				//récupère la photo
				$photoEntite = GererAlbumPhotoService::getPhotoFromAlbum($albumPhotoEntite, $nomCompletCouvertureAlbum);
				$albumPhotoEntite->couverture = $photoEntite;
			}
			
			//sauvegarde l'album
			GererAlbumPhotoService::validerAlbumPhoto($albumPhotoEntite);
			WriterJSON::echoSuccess ("La miniature a bien été modifiée");*/
		}

 		/*public static function checkImageSupprimeeNonMiniatureAlbum() {
 			$nomCompletMiniatureAlbum = ParameterGetter::getRequestParameter("nomCompletMiniatureAlbum",true);
 			$concertEntite = ParameterGetter::getSessionParameter("concertEntite", true);
 			if ($concertEntite->nomCompletMiniatureAlbum == $nomCompletMiniatureAlbum) {
 				//Si la photo qui vient d'être supprimée est la miniature d'album, on supprime
 				GererConcertAction::setMiniatureAlbumForConcert("", $concertEntite);
 			}
 			WriterJSON::echoSuccessState();
 		}*/
		
		public static function getListeChansonFromAlbumId($idAlbumMusique) {
			$listeMusique = GererAlbumMusiqueService::getListeMusiqueFromAlbumId($idAlbumMusique);
			return $listeMusique;
		}
		
		public static function getMusiqueInCurrentAlbum($nomMusique) {
			$albumMusiqueEntite = ParameterGetter::getSessionParameter("albumMusiqueEntite", true);
			$listeMusique = GererAlbumMusiqueService::getMusiqueFromAlbum($albumMusiqueEntite, $nomMusique);
			return $listeMusique;
		}
		
		public static function deleteMusique() {
			$albumMusiqueEntite = ParameterGetter::getSessionParameter("albumMusiqueEntite", true);
				
			//récupère le nom de la photo
			$nomMusique = ParameterGetter::getRequestParameter("nomMusique", true);
			GererAlbumMusiqueService::deleteMusique($albumMusiqueEntite, $nomMusique);
			
			WriterJSON::echoSuccessState();
		}
		
		private static function verifierAlbumMusiqueAvantValidation($albumMusiqueEntite) {
			$exception = new FormulaireException();
			if (StringUtils::isEmpty($albumMusiqueEntite->titre)) {
				$exception->ajouterChampNonRenseigne("Titre");
			}
			if (StringUtils::isEmpty($albumMusiqueEntite->artiste)) {
				$exception->ajouterChampNonRenseigne("Artiste");
			}
			
			if ($exception->contientErreurs()) {
				throw $exception;
			}
		}
	}
?>